package com.cnap.utils;

import cn.hutool.crypto.SecureUtil;

import java.time.LocalDateTime;
import java.time.ZoneId;

/**
 * 通用工具类
 *
 * @author xc
 **/
public final class CommonUtils {

    /**
     * 命名空间固定前缀
     */
    private static final String NAMESPACE_PREFIX = "app-";

    private CommonUtils() {
    }

    /**
     * 字节转kb/mb/gb
     *
     * @param size 字节大小
     * @return 结果
     */
    public static String getPrintSize(long size) {
        if (size < 1024) {
            return size + "KB";
        } else {
            size = size / 1024;
        }
        if (size < 1024) {
            size = size * 100;
            return size / 100 + "." + size % 100 + "MB";
        } else {
            size = size * 100 / 1024;
            return size / 100 + "." + size % 100 + "GB";
        }
    }

    /**
     * 通过用户名称和应用名称获取命名空间值
     *
     * @param userName 用户名称
     * @param appName  应用名称
     * @return 命名空间
     */
    public static String getNamespaceByUserNameAndAppName(String userName, String appName) {
        return NAMESPACE_PREFIX + SecureUtil.md5(userName + ":" + appName);
    }

    /**
     * localdatetime转timestamp(秒)
     *
     * @param localDateTime time
     * @return 结果
     */
    public static long getTimestampFromLocalDateTime(LocalDateTime localDateTime) {
        return localDateTime.atZone(ZoneId.of("Asia/Shanghai")).toEpochSecond();
    }
}
